home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue25 / icmp / ICMP.ZIP / TRACERT / U_TRACE.PAS < prev   
Encoding:
Pascal/Delphi Source File  |  1997-07-02  |  2.1 KB  |  95 lines

  1. unit u_trace;
  2. (*@/// interface *)
  3. interface
  4.  
  5. (*@/// uses *)
  6. uses
  7.   Windows,
  8.   Messages,
  9.   SysUtils,
  10.   Classes,
  11.   Graphics,
  12.   Controls,
  13.   Forms,
  14.   Dialogs,
  15.   StdCtrls,
  16.   Grids,
  17.   icmp;
  18. (*@\\\0000000C03*)
  19.  
  20. type
  21. (*@///   Tfrm_trace = class(TForm) *)
  22. Tfrm_trace = class(TForm)
  23.   TraceRoute: TTraceRoute;
  24.   lbl_hostname: TLabel;
  25.   edt_hostname: TEdit;
  26.   grid: TStringGrid;
  27.   btn_start: TButton;
  28.   btn_break: TButton;
  29.   procedure btn_startClick(Sender: TObject);
  30.   procedure btn_breakClick(Sender: TObject);
  31.   procedure TraceRouteRoute(sender:TObject; hop:Byte; ip,roundtime:Longint);
  32.   procedure FormCreate(Sender: TObject);
  33. end;
  34. (*@\\\0000000C01*)
  35.  
  36. var
  37.   frm_trace: Tfrm_trace;
  38. (*@\\\0000000301*)
  39. (*@/// implementation *)
  40. implementation
  41.  
  42. {$R *.DFM}
  43.  
  44. uses
  45.   ip_misc;
  46.  
  47. var
  48.   nr:integer;
  49.  
  50. (*@/// procedure Tfrm_trace.btn_startClick(Sender: TObject); *)
  51. procedure Tfrm_trace.btn_startClick(Sender: TObject);
  52. begin
  53.   traceroute.hostname:=edt_hostname.text;
  54.   nr:=0;
  55.   grid.rowcount:=0;
  56.   traceroute.action;
  57.   end;
  58. (*@\\\0000000703*)
  59. (*@/// procedure Tfrm_trace.btn_breakClick(Sender: TObject); *)
  60. procedure Tfrm_trace.btn_breakClick(Sender: TObject);
  61. begin
  62.   traceroute.terminate;
  63.   end;
  64. (*@\\\*)
  65. (*@/// procedure Tfrm_trace.TraceRouteRoute(sender: TObject; hop: Byte; ip,roundtime:Longint); *)
  66. procedure Tfrm_trace.TraceRouteRoute(sender: TObject; hop: Byte; ip,roundtime:Longint);
  67. var
  68.   s,t:string;
  69. begin
  70.   grid.rowcount:=nr+1;
  71.   grid.cells[0,nr]:=inttostr(hop)+'.';
  72.   grid.cells[1,nr]:=inttostr(roundtime)+'ms';
  73.   s:=ip2string(ip);
  74.   t:=resolve_hostname(ip);
  75.   if s=t then
  76.     grid.cells[2,nr]:=s
  77.   else
  78.     grid.cells[2,nr]:=t+' ['+s+']';
  79.   inc(nr);
  80.   Application.Processmessages;  (* to give the break button a chance *)
  81.   end;
  82. (*@\\\0032000801000801000516000516*)
  83. (*@/// procedure Tfrm_trace.FormCreate(Sender: TObject); *)
  84. procedure Tfrm_trace.FormCreate(Sender: TObject);
  85. begin
  86.   grid.colwidths[0]:=20;
  87.   grid.colwidths[1]:=40;
  88.   grid.colwidths[2]:=grid.clientwidth-60;
  89.   end;
  90. (*@\\\0000000601*)
  91.  
  92. (*@\\\000C000F01000101000D01*)
  93. end.
  94. (*@\\\0001000011000301*)
  95.